/**
 * 高级类型 — 映射类型
 */

interface Obj {
  a: string,
  b: number,
  c: boolean
}

// 把一个类型中的所有属性变为只读
type ReadonlyObj = Readonly<Obj>;

// 比如说呢把一个接口的所有的属性变成可选的

type PartialObj = Partial<Obj>;

// 抽取 Obj 一些子集
type PickObj = Pick<Obj, 'a' | 'b'>;

// 会创建一些新的属性

type RecordObj = Record<'x'|'Y', Obj>;






